home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / p_pascal.zip / SAMPLES / FACTORIA.PAS < prev    next >
Pascal/Delphi Source File  |  1989-10-31  |  2KB  |  46 lines

  1. {$c+}
  2. program factorial;
  3. var r,s : real;
  4.       i : integer;
  5. { TWO VERSIONS OF FACTORIAL: FACT1.P IS FACTORIAL WITH }
  6. { REAL ARITHMETIC, AND FACT2.P IS FACTORIAL DONE WITH }
  7. { INTEGERS. AND, READINT.P IS A 'HOME MADE' PROCEDURE )
  8. { FOR READING IN INTEGERS. }
  9. { INCLUDE FACT1, FACT2, & READINT: }
  10. {$i+'a:\samples\fact1.p'}
  11. {$i+'a:\samples\fact2.p'}
  12. {$i+'a:\samples\readint.p'}
  13. begin
  14.  { CLEAR THE SCREEN: }
  15.  if system('cls') = 0 then ;
  16.  { NOTE THAT, FOR 8086/8087 LIKE ARCHITECTURES, DOING A }
  17.  { SYSTEM CALL MAY AFFECT THE FLOATING-POINT ARITHMETIC }
  18.  { SYSTEM.  SO, THE CODE THAT IMPLEMENTS 'system(...)' }
  19.  { INCLUDES A CALL TO RESET THE FLOATING-POINT SYSTEM; }
  20.  { THIS _fpreset() CALL MAY NOT BE NECESSARY FOR OTHER }
  21.  { CHIP OR MAINFRAME COMPUTERS. }
  22.  write('Factorial(n); Enter n: ');
  23.  readint(Input, i); readln; writeln;
  24.  writeln('Value of i from readint: ', i:1, '.');
  25.  { CONVERT FROM INTEGER TO REAL: }
  26.  r := i;
  27.  { REAL FACTORIAL: }
  28.  s := fact1(r);
  29.  writeln('Real factorial of ', trunc(r):1,' is ',
  30.         s:1, '.');
  31.  { INTEGER FACTORIAL DOES NOT WORK FOR r > 8: }
  32.  i := fact2(trunc(r));
  33.  write('Integer factorial of ', trunc(r) : 1, ' is ');
  34.  { 'maxint' IS THE ISO STANDARD PASCAL PREDEFINED CONSTANT: }
  35.  if s > maxint then
  36.   writeln('greater than maxint = ', maxint:1, '.')
  37.    else writeln(i:1, '.');
  38.  { REAL TO INTEGER CONVERSION: }
  39.  i := round(s);
  40.  writeln('Rounded value of real factorial of ',
  41.         trunc(r):1, ' is ', i:1, '.')
  42.  { THIS WILL ALSO WORK (CONSULT YOUR FAVORITE PASCAL }
  43.  { TEXTBOOK FOR DETAILS AND VARIATIONS): }
  44.  { writeln(real_number : WIDTH : PRECISION ); }
  45. end.
  46.